# @Time : 2022/3/24 11:24
# @Author : zhangzhihui
# @Email : mrzhangzh@gmail.com
import json

import requests
import xlrd  # 引入库
# from personal_center.models import User
import pymysql
import xmltodict
from suds.client import Client
from datetime import datetime
def test():
    db2 = pymysql.connect(host="127.0.0.1", user='root', password='jsyy2021', port=3306, db="administration",
                          use_unicode=True, charset='utf8')
    cursor2 = db2.cursor()
    wb = xlrd.open_workbook("2021.11考勤全院.xls")  # 打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的，很详细，英语不好的可以百度翻译，翻译出来的结果差不多。
    sheet_num = wb.nsheets  # 获取excel里面的sheet的数量
    sheet_names = wb.sheet_names()  # 获取到Excel里面所有的sheet的名称列表，即使没有sheet也能用。
    sheet = wb.sheet_by_index(0)  # 通过索引的方式获取到某一个sheet，现在是获取的第一个sheet页，也可以通过sheet的名称进行获取，sheet_by_name('sheet名称')
    rows = sheet.nrows  # 获取sheet页的行数，一共有几行
    columns = sheet.ncols  # 获取sheet页的列数，一共有几列
    # 获取第一行的数据
    row_data = sheet.row_values(4)  # 返回给定的行数的单元格数据进行切片
    # 获取第二列的数据
    col_data = sheet.col_values(1)
    # 获取单元格的数据
    # one_data = sheet.cell(row_index, col_index)  # 同样是通过索引的方式，cell(0,1)获取到的是第一行第二列的单元格数据
    # cell_value = one_data.value  # 获取单元格的值
    # cell_type = one_data.ctype  # 获取单元格的类型，在xlrd中，单元格的数据类型有6种，
    print(rows)
    print(str(int(row_data[1:3][1])))

    for i in range(4, rows):
        print(sheet.row_values(i)[1:3])
        row_list = sheet.row_values(i)[1:3]
        update_sql = "update tb_users_message set department = %s where job_number= %s "
        cursor2.execute(update_sql, (row_list[0], str(int(row_list[1]))))
        db2.commit()

def test2():
    db2 = pymysql.connect(host="127.0.0.1", user='root', password='jsyy2021', port=3306, db="administration",
                          use_unicode=True, charset='utf8')
    cursor2 = db2.cursor()
    wb = xlrd.open_workbook(
        "2021.11考勤全院.xls")  # 打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的，很详细，英语不好的可以百度翻译，翻译出来的结果差不多。
    sheet_num = wb.nsheets  # 获取excel里面的sheet的数量
    sheet_names = wb.sheet_names()  # 获取到Excel里面所有的sheet的名称列表，即使没有sheet也能用。
    sheet = wb.sheet_by_index(0)  # 通过索引的方式获取到某一个sheet，现在是获取的第一个sheet页，也可以通过sheet的名称进行获取，sheet_by_name('sheet名称')
    rows = sheet.nrows  # 获取sheet页的行数，一共有几行
    columns = sheet.ncols  # 获取sheet页的列数，一共有几列
    # 获取第一行的数据
    row_data = sheet.row_values(76)  # 返回给定的行数的单元格数据进行切片
    # 获取第二列的数据
    col_data = sheet.col_values(0)
    # 获取单元格的数据
    # one_data = sheet.cell(row_index, col_index)  # 同样是通过索引的方式，cell(0,1)获取到的是第一行第二列的单元格数据
    # cell_value = one_data.value  # 获取单元格的值
    # cell_type = one_data.ctype  # 获取单元格的类型，在xlrd中，单元格的数据类型有6种，
    print(rows)
    print(row_data)
    for i in range(rows):
        # INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
        row_list = sheet.row_values(i)
        insert_sql = "insert INTO administrative_company (create_time,update_time,name ) values (NOW(),NOW(),%s)"
        cursor2.execute(insert_sql)
        db2.commit()


def get_method_args(client, method_name):
    method = client.wsdl.services[0].ports[0].methods[method_name]
    input_params = method.binding.input
    return input_params.param_defs(method)

if __name__ == '__main__':
    # test()
    # test2()
    headers = {'Content-Type': 'text/xml;charset=UTF-8'}
    body = """
     <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:hl7-org:v3">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:PlatService>
         <!--Optional:-->
         <urn:message>
         <Req> 
          <MsgHead> 
            <SrvId>00005</SrvId>  
            <ReqSysId>015001-19</ReqSysId>  
            <MsgId>11</MsgId>  
            <MsgCheckCode/>  
            <Dt>2022-01-10 11:25:03</Dt>  
            <Remark/> 
          </MsgHead>  
          <QueryCondition> 
            <UnitId>015001</UnitId>  
            <UserId/>  
            <UserCode/>  
            <Name/>  
            <IdNumber/> 
          </QueryCondition> 
        </Req>
        
        </urn:message>
                
              </urn:PlatService>
           </soapenv:Body>
        </soapenv:Envelope>
    
    """
    """
         <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:hl7-org:v3">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:PlatService>
             <!--Optional:-->
             <urn:message>
             <Req> 
              <MsgHead> 
                <SrvId>00008</SrvId>  
                <ReqSysId>015001-19</ReqSysId>  
                <MsgId>11</MsgId>  
                <MsgCheckCode/>  
                <Dt>2022-01-10 11:25:03</Dt>  
                <Remark/> 
              </MsgHead>  
              <QueryCondition> 
                <UnitId>015001</UnitId>  
                <DeptId/>  
                <DeptName/>  
              </QueryCondition> 
            </Req>

            </urn:message>

                  </urn:PlatService>
               </soapenv:Body>
            </soapenv:Envelope>

        """
    url = 'http://192.168.12.49:8088/services/ESB_StandardService?wsdl'
    r = requests.post(url, data=body.encode("utf-8"), headers=headers)
    # print(r.status_code)
    # print(r.text)
    d = xmltodict.parse(r.text)  # 分析XML字符串，并转换为字典
    # print(d)
    print(d['soapenv:Envelope']['soapenv:Body']['InvokeResponse']['InvokeResult']['Res']['DeptList'])
    # client = Client(url)
    # print(client)
    # 查看人员信息
    # numbers = 1
    # for i in json.loads(aaaaa)["soapenv:Envelope"]["soapenv:Body"]["InvokeResponse"]["InvokeResult"]["Res"]["UserList"]["Row"]:
    #     if i["IsStop"] == "0":
    #         one_dict = {
    #             "UserCode": i["UserCode"],
    #             "PersonName": i["PersonName"],
    #             "IdNumber": i["IdNumber"],
    #             "SexCode": i["SexCode"],
    #             "BronDate": i["BronDate"].split(' ')[0].replace('/', '-') if i["BronDate"] else "",
    #             "mobeil": i["ContactNumber"],
    #             "DepName": i["DepartmentName"],
    #             "DepCode": i["DepartmentCode"],
    #             "IsStop": i["IsStop"],
    #             "numbers": numbers
    #         }
